#include "Poller.h"
#include "EPollPoller.h"

#include <cstdlib>

/**
 * 该函数为何不在Poller.cc中实现：
 * 因为要包含头文件EPollPoller.h、PollPoller.h。这是子类的头文件，在父类的头文件中包含子类的头文件不太合理
 */

// EventLoop可以调用该接口，获取Poller，默认为epoll模式，设置了环境变量后为poll
Poller *Poller::newDefaultPoller(EventLoop *loop)
{
    if (::getenv("MUDUO_USE_POLL"))
    {
        return nullptr;
    }
    else
    {
        return new EPollPoller(loop);
    }
}